package top.bingoz.wanandroid.data.http

import io.reactivex.Flowable
import retrofit2.http.GET
import retrofit2.http.POST
import retrofit2.http.Path
import retrofit2.http.Query
import top.bingoz.wanandroid.bean.*

/**
 * @author su
 * @date 2018/7/27
 * @description
 */
interface ApiService {

    ///////////首页相关///////////

    /**
     * 首页文章列表
     * @param page 拼接在链接上，从0开始
     */
    @GET("/article/list/{page}/json")
    fun getMainArticleList(@Path("page") page: Int): Flowable<BaseResult<Data>>


    /**
     * 首页banner
     */
    @GET("/banner/json")
    fun getBanner(): Flowable<BaseResult<List<Banner>>>

    /**
     * 常用网站
     */
    @GET("/friend/json")
    fun getCommonSites(): Flowable<BaseResult<List<Site>>>

    /**
     * 搜索热词
     */
    @GET("/hotkey/json")
    fun getHotkeys(): Flowable<BaseResult<List<Hotkey>>>

    ///////////知识体系下的文章///////////

    /**
     * 体系数据
     */
    @GET("/tree/json")
    fun getTrees(): Flowable<BaseResult<List<Tree>>>


    /**
     * 知识体系下的文章
     * @param page 拼接在链接上，从0开始
     * @param cid 分类的id，上述二级目录的id
     */
    @GET("/article/list/{page}/json")
    fun getArticle(
            @Path("page") page: Int,
            @Query("cid") cid: Int
    )

    ///////////导航///////////

    /**
     * 导航数据
     */
    @GET("/navi/json")
    fun getNavis(): Flowable<BaseResult<List<Navi>>>


    ///////////项目///////////

    /**
     * 项目分类
     */
    @GET("/project/tree/json")
    fun getCategories(): Flowable<BaseResult<List<Category>>>


    /**
     * 项目列表数据
     * @param page 页码：拼接在链接中，从1开始。
     * @param cid 分类的id，上面项目分类接口
     */
    @GET("/project/list/{page}/json")
    fun getProjects(
            @Path("page") page: Int,
            @Query("cid") cid: Int
    )


    ///////////登录与注册///////////

    /**
     * 登录
     */
    @POST("/user/login")
    fun postUserLogin(
            @Query("username") username: String,
            @Query("password") password: String
    )

    /**
     * 注册
     */
    @POST("/user/register")
    fun postUserRegister(
            @Query("username") username: String,
            @Query("password") password: String,
            @Query("repassword") respassword: String
    )


    @GET("http://image.baidu.com/channel/listjson?rn=30&tag1=%E6%98%8E%E6%98%9F&tag2=%E5%85%A8%E9%83%A8&ie=utf8")
    fun queryImages(@Query("pn") pn: Int = 0): Flowable<Images?>

}